package com.pioneer.web.sale.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pioneer.web.sale.domain.SalContract;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * ISalContractService
 *
 * @author hlm
 * @date 2025-04-22 09:04:55
 */
public interface ISalContractService extends IService<SalContract> {

    /**
     * 根据销售合同ID查询销售合同
     * @param contractId 销售合同ID
     * @return 结果
     */
    SalContract getContractById(Long contractId);

    /**
     * 新增销售合同
     * @param contract 销售合同
     * @return 结果
     */
    @Transactional(rollbackFor = Exception.class)
    boolean addContract(SalContract contract);

    /**
     * 修改销售合同
     * @param contract 销售合同
     * @return 结果
     */
    @Transactional(rollbackFor = Exception.class)
    boolean editContract(SalContract contract);

    /**
     * 删除销售合同
     * @param list 销售合同ID集合
     * @return 结果
     */
    @Transactional(rollbackFor = Exception.class)
    boolean removeContract(List<Long> list);

    /**
     * 提交销售合同
     * @param contractIdList 销售合同ID集合
     * @return 结果
     */
    boolean commitContract(List<Long> contractIdList);

    /**
     * 撤回销售合同
     * @param contractIdList 销售合同ID集合
     * @return 结果
     */
    boolean recallContract(List<Long> contractIdList);

    /**
     * 审批销售合同
     * @param contract 销售合同
     * @return 结果
     */
    boolean approveContract(SalContract contract);

    /**
     * 弃审销售合同
     * @param contract 销售合同
     * @return 结果
     */
    boolean unapproveContract(SalContract contract);
}
